package chapter07

/**
  * 不可变调用操作符,可变集合调用方法
  * 不可变集合之 不可变数组
  */
object Test01_ImmutableArray {

  def main(args: Array[String]): Unit = {
    // 创建数组1
    val array = new Array[Int](10)
    // 创建数组2
    val array2 = Array(12, 34, 567, 435, 6436)


    // 访问
    println(array2(0))

    // 修改
    array2(4) = 777
    println(array2(4))

    // 访问
    println(array2.apply(3))

    // 修改
    array2.update(1, 10000)
    println(array2.apply(1))


    println("=========array 遍历=======")
    println("========遍历方式1==========")

    // 遍历方式1 普通for
    for (i <- 0 until array2.length) {
      println(array2(i))
    }
    // 遍历方式2
    println("========遍历方式2==========")
    for (i <- array2.indices) {
      println(array2(i))
    }

    // 遍历方式3
    println("========遍历方式3==========")
    val iterator = array2.iterator
    while (iterator.hasNext) {
      println(iterator.next())
    }

    // 遍历方式4 -- 增强for
    println("========遍历方式4==========")
    for (i <- array2) {
      println(i)
    }

    // 遍历方式5 -- 增强foreach
    println("========遍历方式5==========")
    //5.1
    array2.foreach((item:Int)=>println(item))
    //5.2 ,参数支出项一次可用_代替
    array2.foreach(println(_))
    //5.3
    array2.foreach(println)


    println("=========array 转string=======")
    println(array2.mkString("-"))


    println("=========array 添加元素=======")
    // . 可用空格代替
    // 向后添加
    val newArr = array2.:+(100)
    println(newArr.mkString(">"))
    // 在前添加
    val newArr2 = newArr.+:(200)
    println(newArr2.mkString(">"))
    // 向后添加
    val newArr3 = newArr2 :+ 300
    // 在前添加
    val newArr4 = 400 +: newArr3.:+ (500)
  }
}
